#include "header.h"

int main(int argc, char const *argv[])
{
    if (3 != argc)
    {
        printf("格式: %s IP地址 端口号\n", argv[0]);
        exit(-1);
    }
    // 建立连接
    int sok_fd = TCP_Init_Client(atoi(argv[2]), argv[1]);

    // 登录 或 注册
    login_or_reg(sok_fd);

    printf(" =================== 开启聊天 =================== \n");

    pthread_t Tid[2];

    pthread_create(&Tid[0], NULL, pthread_read, (void *)&sok_fd);
    pthread_create(&Tid[1], NULL, pthread_write, (void *)&sok_fd);

    pthread_join(Tid[0], NULL);
    pthread_join(Tid[1], NULL);

    // 关闭连接
    TCP_close_Sever(&sok_fd);

    return 0;
}


void *pthread_read(void *soc)
{
    char buf[128];
    int acc_fd = *((int *)soc);
    while (1)
    {
        // 接收数据
        memset(buf, 0, sizeof(buf));
        read(acc_fd, buf, sizeof(buf)); // 接收

        // 判断当前是否有数据
        if (strlen(buf) == 0)
        {
            continue;
        }

        // 显示数据
        printf("\n服务器消息:%s\n", buf);
        if (!strcmp(buf, "quit\n"))
        {
            return NULL;
        }
    }
    return NULL;
}

void *pthread_write(void *soc)
{
    char buf[128];
    int acc_fd = *((int *)soc);
    while (1)
    {
        memset(buf, 0, sizeof(buf));
        printf("客户端:");
        fgets(buf, sizeof(buf), stdin);
        // buf[strlen(buf) - 1] = '\0';
        write(acc_fd, buf, strlen(buf)); // 发送

        if (!strcmp(buf, "quit\n"))
        {
            return NULL;
        }
    }
    return NULL;
}
